<?php

if (!defined('BASEPATH'))
    exit('No direct script access allowed');

/**
 * Projeto Interdiciplinar
 * Gurpo 1 - Primeira turma do curso de Aux Info da Escom Brasília
 * 
 * Description of c_usuario
 *
 *  * @author 2 Sgt Lemoel, 
 *         3 Sgt Albuquerque,
 *         3 Sgt Azambuja,
 *         3 Fabio Moura
 * @since 11/2012
 * @version 1
 */
class C_Usuario extends MY_Controller {

    public function __construct() {
        parent::__construct();
        $this->load->model('m_usuario');
    }

    /**
     * Carrega a view de cadastro de usuarios do Sistema
     */
    public function formUsuario() {

        $this->session->set_userdata('origem', 'formUsuario');
        $this->session->set_userdata('destino', 'validaFormUsuario');

        $this->load->model('m_pstgrad');
        $this->load->model('m_perfil');
        $this->load->model('m_dependencia');
        $this->load->model('m_status');

        $msg = 'Acessou página de cadastro de usuário';
        $this->m_tools->gravaLog($msg);

        /*
         * Gerando o toke para envio para o form da view
         */
        $dados['token'] = $this->m_tools->geraToken();

        /*
         * Gravando o token na session
         */
        $this->session->set_userdata('token', $dados['token']);

        $dados['comboPstGrad'] = $this->m_pstgrad->cmbPstGrad();
        $dados['comboPerfil'] = $this->m_perfil->cmbPerfil();
        $dados['comboSessao'] = $this->m_dependencia->cmbDependencia();
        $dados['comboStatus'] = $this->m_status->cmbStatus(1);

        /*
         * Pagina de cadastro de usuário
         */
        $this->loadView('usuario/v_formUsuario', $dados, Admin);
    }

    /**
     * Carrega a view de cadastro de usuarios do Sistema
     */
    public function formUsuarioEditar() {

        $this->session->set_userdata('origem', 'formUsuarioEditar');
        $this->session->set_userdata('destino', 'validaFormEditar');

        $this->load->model(array('m_pstgrad', 'm_perfil', 'm_dependencia', 'm_status'));

        $idt = $this->encrypt->decode($this->input->post('dados'));

        $msg = 'Acessou página de editar cadastro de usuário';
        $this->m_tools->gravaLog($msg);

        /*
         * Gerando o toke para envio para o form da view
         */
        $dados['token'] = $this->m_tools->geraToken();

        /*
         * Gravando o token na session
         */
        $this->session->userdata('token', $dados['token']);

        $dados['dadosUsuario'] = $this->m_usuario->getUsuario($idt)->row();

        $dados['comboPstGrad'] = $this->m_pstgrad->cmbPstGrad($dados['dadosUsuario']->PST_GRAD_ID);
        $dados['comboPerfil'] = $this->m_perfil->cmbPerfil($dados['dadosUsuario']->PERFIL_ID);
        $dados['comboSessao'] = $this->m_dependencia->cmbDependencia($dados['dadosUsuario']->DEPENDENCIA_ID);
        $dados['comboStatus'] = $this->m_status->cmbStatus((int) $dados['dadosUsuario']->STATUS);

        /*
         * Pagina de editar um usuario usuário
         */
        $this->loadView('usuario/v_formUsuarioEditar', $dados, Admin);
    }

    public function validaFormUsuario() {

        if ($this->session->userdata('origem') == 'formUsuario' &&
                $this->session->userdata('destino') == 'validaFormUsuario') {

            $dados['IDT'] = trim($this->input->post('i_idt'));
            $dados['NOME'] = trim($this->input->post('i_nomeCompleto'));
            $dados['NOME_GUERRA'] = trim($this->input->post('i_nomeGuerra'));
            $dados['PST_GRAD_ID'] = $this->input->post('cmb_PstGrad');
            $dados['PERFIL_ID'] = $this->input->post('cmb_Perfil');
            $dados['DEPENDENCIA_ID'] = $this->input->post('cmb_Sessao');
            $dados['STATUS'] = $this->input->post('cmb_Status');
            $dados['SENHA'] = trim($this->input->post('i_senha'));
            $confirmaSenha = trim($this->input->post('i_confirma'));
            $token = trim($this->input->post('token'));

            $msg = null;

            if ($this->session->userdata('token') == $token) {
                if (is_numeric($dados['PST_GRAD_ID']) && is_numeric($dados['PERFIL_ID']) && is_numeric($dados['DEPENDENCIA_ID']) && is_numeric($dados['STATUS'])) {
                    if (strlen($dados['IDT']) > 9 && strlen($dados['NOME']) > 5 && !empty($dados['NOME_GUERRA'])) {
                        if (!empty($dados['SENHA']) && !empty($confirmaSenha)) {
                            if ($dados['SENHA'] == $confirmaSenha) {



                                /*
                                 * Chamada ao método que realiza a gravação
                                 */
                                $msg .= $this->gravarUsuario($dados);
                            }
                        }
                    }
                } else {
                    echo '<script>location.href="' . site_url("c_login/logout") . '";</script>';
                }
            } else {
                echo '<script>location.href="' . site_url("c_login/logout") . '";</script>';
            }
            echo $msg;
        }
    }

    public function validaFormEditar() {

        if ($this->session->userdata('origem') == 'formUsuarioEditar' &&
                $this->session->userdata('destino') == 'validaFormEditar') {

            $dados['IDT'] = trim($this->input->post('i_idt'));
            $dados['NOME'] = trim($this->input->post('i_nomeCompleto'));
            $dados['NOME_GUERRA'] = trim($this->input->post('i_nomeGuerra'));
            $dados['PST_GRAD_ID'] = $this->input->post('cmb_PstGrad');
            $dados['PERFIL_ID'] = $this->input->post('cmb_Perfil');
            $dados['DEPENDENCIA_ID'] = $this->input->post('cmb_Sessao');
            $dados['STATUS'] = $this->input->post('cmb_Status');
            $dados['SENHA'] = trim($this->input->post('i_senha'));
            $confirmaSenha = trim($this->input->post('i_confirma'));
            $token = trim($this->input->post('token'));

            $msg = null;

            if ($this->session->userdata('token') == $token) {
                if (is_numeric($dados['PST_GRAD_ID']) && is_numeric($dados['PERFIL_ID']) && is_numeric($dados['DEPENDENCIA_ID']) && is_numeric($dados['STATUS'])) {
                    if (strlen($dados['IDT']) > 9 && strlen($dados['NOME']) > 5 && !empty($dados['NOME_GUERRA'])) {
                        /*
                         * Caso venha senha ou confirma senha eles tem que ser iguais e so depois enviar ao banco de dados
                         */
                        if (!empty($dados['SENHA']) || !empty($confirmaSenha)) {
                            if ($dados['SENHA'] == $confirmaSenha) {

                                /*
                                 * Chamada ao método que realiza a gravação
                                 */
                                $msg .= $this->updateUsuario($dados);
                            }
                            /*
                             * Se nao temos valores na senha e confirma senha vamos gravar sem mexer na senha 
                             * do usuario
                             */
                        } else if (empty($dados['SENHA']) && empty($confirmaSenha)) {

                            $msg .= $this->updateUsuario($dados);
                        }
                    }
                } else {
                    echo '<script>location.href="' . site_url("c_login/logout") . '";</script>';
                }
            } else {
                echo '<script>location.href="' . site_url("c_login/logout") . '";</script>';
            }
            echo $msg;
        }
    }

    /**
     * Gravando os dados do formulário no banco de dados
     * @return string com a mensagem do sucesso ou erro
     */
    private function gravarUsuario($dados) {

        /*
         * Gravar os dados em banco de dar um retorno para o usuário
         */
        $numRegistro = $this->m_usuario->getUsuario($dados['IDT'])->num_rows();

        $return = ($numRegistro > 0) ? 'erro' : $this->m_usuario->setUsuario($dados);

        echo $return;
    }

    /**
     * Gravando os dados do formulário no banco de dados
     * @return string com a mensagem do sucesso ou erro
     */
    private function updateUsuario($dados) {
        echo $this->m_usuario->updateUsuario($dados);
    }

    public function listarUsuario() {

        $dados['usuarios'] = null;

        $resultUsuario = $this->m_usuario->listaUsuarios()->result();

        $i = 0;
        foreach ($resultUsuario as $value) {

            $idtCrypt = "'" . $this->encrypt->encode($value->IDT) . "'";

            /*
             * Grifando o nome de guerra do militar
             */
            $value->NOME = ($this->m_usuario->grifarNomeGuerra($value->NOME, $value->NOME_GUERRA));

            $dados['usuarios'] .= "<tr class='gradeU' valign='middle' align='center' style='font-size: 12px ;text-transform:uppercase;'>";
            $dados['usuarios'] .= "<td valign='middle'><p align='center' scope='col' >" . @$i++ . "</p></td>";
            $dados['usuarios'] .= "<td valign='middle'><p align='center' scope='col' >" . @$value->IDT . "<br/>" . @$value->PST_GRAD . "</p></td>";
            $dados['usuarios'] .= "<td valign='middle'><p align='center' scope='col' >" . @$value->NOME . "</p></td>";
            $dados['usuarios'] .= "<td valign='middle'><p align='center' scope='col' >" . @$value->PERFIL . "</p></td>";
            $dados['usuarios'] .= "<td valign='middle'><p align='center' scope='col' >" . @$value->SESSAO . "</p></td>";
            $dados['usuarios'] .= "<td valign='middle'><p align='center' scope='col' >" . @$value->RAMAL . "</p></td>";
            $dados['usuarios'] .= "<td valign='middle'><p align='center' scope='col' >" . @$value->STATUS . "</p></td>";
            $dados['usuarios'] .= '<td valign="middle">
                                      <p align="center" scope="col" >
                                        <a href="#" onclick = "novoUsuario()"><span class="ui-icon ui-icon-circle-plus" title="Novo Usuário"></span></a>
                                        <a href="#" onclick = "editarUsuario(' . $idtCrypt . ')"><span class="ui-icon ui-icon-clipboard" title="Editar Usuário"></span></a>
                                        <a href="#" onclick = "excluirUsuario(' . $idtCrypt . ')"><span class="ui-icon ui-icon-trash" title="Deletar Usuário"></span></a>
                                       </p>
                                   </td>';
            $dados['usuarios'] .= "</tr>";
        }

        $this->loadView('usuario/v_relUsuarios', $dados, Admin);
    }

    public function excluirUsuario() {
        $idt = $this->encrypt->decode($this->input->post('idt'));
        echo $this->m_usuario->excluirUsuario($idt);
    }

}

?>